package name.peter.leetcode.daily.alternatinggroup2;

/**
 * 给你一个整数数组 colors 和一个整数 k ，colors表示一个由红色和蓝色瓷砖组成的环，第 i 块瓷砖的颜色为 colors[i] ：
 *
 * colors[i] == 0 表示第 i 块瓷砖的颜色是 红色 。
 * colors[i] == 1 表示第 i 块瓷砖的颜色是 蓝色 。
 * 环中连续 k 块瓷砖的颜色如果是 交替 颜色（也就是说除了第一块和最后一块瓷砖以外，中间瓷砖的颜色与它 左边 和 右边 的颜色都不同），那么它被称为一个 交替 组。
 *
 * 请你返回 交替 组的数目。
 *
 * 注意 ，由于 colors 表示一个 环 ，第一块 瓷砖和 最后一块 瓷砖是相邻的。
 */
public class Solution {
    public int numberOfAlternatingGroups(int[] colors, int k) {
        /**
         * 正统的思路是快慢指针，每次快指针移动需要与前面的值进行比较，如果相等，则将慢指针移过来。
         * 不等的话，需要比较快慢指针的跨度，如果大于k，慢指针移动一位，计数器+1；等于，计数器+1；小于，慢指针不动
         * 进阶的思路是单个指针就可以，单个指针的前提思路是，如果我k长度的符合，k+1也符合，那么k+1有两个k长的符合要求的数组
         * 很难理解的话看如下的图：
         * ！！！！ 这是四个符合要求的数组，k=3，那么前三个和后三个都是，那么数量就是4-3+1=2个
         *
         * 须知，环形数组要把前k-2元素拼接到最后
         */
        int count = colors.length + k - 2;
        int num = 0;
        for (int i = 0; i < count; i++) {

        }
        return count;
    }
}
